import 'dart:math';

void main() {
  say();
  introduce("John");
  // 可选传参 c: 10
  var sum = sumNumber(10, 20, c: 30);
  print('函数执行结果 $sum');

  // 函数对象
  Function speak = introduce;
  speak("Jane");

  // 匿名函数 (){ // 函数语句 }
  onClick(() {
    print('请求数据');
  });
  onClick(() {
    print('搜索');
  });

  // 箭头函数
  var rand = getRand();
  print('随机数 $rand');

  List allGoodsList = [
    {'name': 'apple', 'price': 11.0, 'count': 5, 'selected': true},
    {'name': 'banana', 'price': 10.5, 'count': 2, 'selected': true},
    {'name': 'orange', 'price': 14.5, 'count': 4, 'selected': true},
    {'name': 'grape', 'price': 12.0, 'count': 3, 'selected': false},
  ];
  bool checkAll = isSelectedAll(allGoodsList);
  print('是否全选 ${checkAll ? "是" : "否"}');
}

// void 代表这个函数没有返回值
void say() {
  print("Hello, World!");
}

introduce(String name) {
  print("My name is $name.");
}

// 可选传参写法 {num? c}
num sumNumber(num a, num b, {num? c}) {
  return a + b + (c ?? 0);
}

onClick(Function callback) {
  print("点击了按钮");
  callback();
}

// 箭头函数
// var getRand = () => Random().nextInt(100);
int getRand() => Random().nextInt(100);

// 全选判断
bool isSelectedAll(List list, {String? key}) =>
    list.every((item) => item[key ?? 'selected']);
